package net.aiotos.common.dto;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 标准config属性对象结构（用户可自定义）
 * 下面字段为标准自带字段,不可删除
 */
@Data
@NoArgsConstructor
public class DeviceConfigDTO {

    /**
     * bind : {}
     * iotosdk.driver : python/dr_simulator.Simulator
     * java : python/dr_simulator.Simulator // 用于测试
     * param : {"sub":[]}
     * parentid : null
     */

    @JSONField(name = "bind")
    private JSON bind;
    @JSONField(name = "driver")
    private String driver;
    @JSONField(name = "java")
    private String java;
    @JSONField(name = "param")
    /**
     * 必须是JSONObject,否则用户自定义字段就会丢失.
     * 具体使用时，用户可调用getParam(Class<T> tClass)
     */
    private JSONObject param;
    @JSONField(name = "parentid")
    private String parentId;

    public <T> T getParam(Class<T> tClass) {
        return param.toJavaObject(tClass);
    }
}



